/*
50. Entrar via teclado com dois valores quaisquer. Após a digitação, exibir um seletor de opções (“menu”)
com as seguintes opções:
1 – Multiplicação
2 – Adição
3 – Divisão
4 – Subtração
5 – Fim de processo
Solicitar uma opção por parte do usuário, verificar se é ou não uma opção válida (letras ou números)
e processar a respectiva operação. Enviar mensagem de erro se a opção escolhida não existir no seletor.
Encerrar o programa somente quando o usuário escolher a opção de finalização. Repare que a opção de
número três é de divisão e o programa deverá enviar mensagem de erro, (somente nesta opção) se o
denominador for zero.
*/
package pacote_controle;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 *
 * @author SHS
 */
public class Exercicio_50 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Digite dois valores quaisquer:");

        float num1, num2 = 0;
        File arquivo = new File("Questão_50.txt");

        int varSaida = 0;
        
        do {
            try {
                PrintWriter arq = new PrintWriter(arquivo);

                System.out.println("Primeiro valor:");
                num1 = (entrada.nextInt());
                arq.println(num1);
                System.out.println("Segundo valor:");
                num2 = (entrada.nextInt());
                arq.println(num2);
                arq.close();
                varSaida = 0;
            } catch (NumberFormatException e) {
                System.out.println("Digite somente números!");
                varSaida = 1;
            } catch (FileNotFoundException ex) {
                System.out.println("Erro!" + ex);
            }
        } while (varSaida == 1);

        int z = 0;

        do {
            System.out.println("Selecione uma operação.");
            System.out.println("\t1 – Multiplicação\n"
                    + "\t2 – Adição\n"
                    + "\t3 – Divisão\n"
                    + "\t4 – Subtração\n"
                    + "\t5 – Fim de processo");

            z = entrada.nextInt();

            switch (z) {
                case 1:
                    System.out.println("\nMultiplicação");

                    FileReader leituraArquivo;

                    try {
                        leituraArquivo = new FileReader("Questão_50.txt");
                        BufferedReader arq = new BufferedReader(leituraArquivo);

                        String multiplicando = arq.readLine();
                        float multiplicandoFloat = Float.parseFloat(multiplicando);
                        String multiplicador = arq.readLine();
                        float multiplicadorFloat = Float.parseFloat(multiplicador);
                        float produto = multiplicandoFloat * multiplicadorFloat;
                        System.out.println("O resultado da multiplicação é: " + produto);
                        arq.close();

                    } catch (FileNotFoundException ex) {
                        System.out.println("Erro!" + ex);
                    } catch (IOException ex) {
                        System.out.println("Erro!" + ex);
                    }
                    break;
                case 2:
                    System.out.println("\nAdição");
                    int soma = 0;
                    try {
                        leituraArquivo = new FileReader("Questão_50.txt");
                        BufferedReader arq = new BufferedReader(leituraArquivo);

                        String parcela1 = arq.readLine();
                        float parcela1Float = Float.parseFloat(parcela1);
                        String parcela2 = arq.readLine();
                        float parcela2Float = Float.parseFloat(parcela2);
                        float total = parcela1Float + parcela2Float;
                        arq.close();
                        System.out.println("O resultado da adição é: " + total);
                    } catch (FileNotFoundException ex) {
                        System.out.println("Erro!" + ex);
                    } catch (IOException ex) {
                        System.out.println("Erro!" + ex);
                    }
                    break;
                case 3:
                    System.out.println("\nDivisão");

                    try {
                        leituraArquivo = new FileReader("Questão_50.txt");
                        BufferedReader arq = new BufferedReader(leituraArquivo);

                        if (num2 != 0) {

                            String dividendo = arq.readLine();
                            float dividendoFloat = Float.parseFloat(dividendo);
                            String divisor = arq.readLine();
                            float divisorFloat = Float.parseFloat(divisor);
                            float quociente = dividendoFloat/divisorFloat;
                            arq.close();
                            System.out.println("O resultado da divisão é: " + quociente);
                        } else {
                            System.out.println("Impossível dividir por zero!");
                        }
                    } catch (FileNotFoundException ex) {
                        System.out.println("Erro!" + ex);
                    } catch (IOException ex) {
                        System.out.println("Erro!" + ex);
                    }
                    break;
                case 4:
                    System.out.println("\nSubtração");
                    try {
                        leituraArquivo = new FileReader("Questão_50.txt");
                        BufferedReader arq = new BufferedReader(leituraArquivo);

                        String minuendo = arq.readLine();
                        float minuendoFloat = Float.parseFloat(minuendo);
                        String subtraendo = arq.readLine();
                        float subtraendoFloat = Float.parseFloat(subtraendo);
                        float resto = minuendoFloat-subtraendoFloat;
                        arq.close();
                        System.out.println("O resultado da subtração é: " + resto);
                    } catch (FileNotFoundException ex) {
                        System.out.println("Erro!" + ex);
                    } catch (IOException ex) {
                        System.out.println("Erro!" + ex);
                    }
                    break;
                case 5:
                    System.out.println("Fim do processo!");
                    break;
                default:
                    System.out.println("\n\nDigite uma opção válida.\n");
                    break;
            }
        } while (z != 5);
    }
}